package br.com.ucb.invista.controller;

import java.io.Serializable;
import java.util.Arrays;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.com.ucb.invista.dao.PessoaDao;
import br.com.ucb.invista.domain.Pessoa;
import br.com.ucb.invista.enumeration.TipoAtivo;
import br.com.ucb.invista.enumeration.TipoFormaLancamento;
import br.com.ucb.invista.enumeration.TipoPessoa;
import br.com.ucb.invista.utils.Constantes;

@ManagedBean(name = "pessoaController")
@SessionScoped
public class PessoaController implements Serializable {

	private static final long serialVersionUID = 1L;
	
	private Pessoa pessoa;
	private PessoaDao pessoaDao;
	
	public PessoaController() {
		this.pessoa = new Pessoa();	
		this.pessoaDao = new PessoaDao();
	}
	
	public String novo() {
		return Constantes.paginaPessoaCadastrarAlterar;
	}
	
	public String cancelar() {
		return Constantes.paginaPessoaListar;
	}
	
	public void limparCampos() {
		this.pessoa = new Pessoa();
		this.pessoaDao = new PessoaDao();
	}
	
	public List<TipoFormaLancamento> listarTipoFormaPagamento() {
		return Arrays.asList(TipoFormaLancamento.values());
	}
	
	public String salvar() {
		this.pessoaDao.salvar(pessoa);
			this.limparCampos();
				return Constantes.paginaPessoaCadastrarAlterar;
	}
	
	public String alterar(Pessoa pessoa) {
		this.pessoa = pessoa;
		this.pessoaDao.alterar(pessoa);
		return Constantes.paginaPessoaCadastrarAlterar;
	}
	
	public String excluir(Pessoa pessoa) {
		this.pessoa = pessoa;
		this.pessoaDao.excluir(this.pessoa);
			return Constantes.paginaPessoaListar;
	}
	
	public List<TipoPessoa> listarTipoPessoas() {
		return Arrays.asList(TipoPessoa.values());
	}
	
	public List<TipoAtivo> listarTipoAtivo() {
		return Arrays.asList(TipoAtivo.values());
	}
	
	public String abrirPaginaPessoaCadastrarAlterar() {
		return Constantes.paginaPessoaCadastrarAlterar;
	}
	
	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}

	public PessoaDao getPessoaDao() {
		return pessoaDao;
	}

	public void setPessoaDao(PessoaDao pessoaDao) {
		this.pessoaDao = pessoaDao;
	}
}
